import axios from "axios";
import { getToken } from "./cookie";
import { removeToken } from "./cookie";
import router from "@/router";

axios.defaults.headers["Content-Type"] = "application/json;charset=utf-8";

const service = axios.create({
    // 不同接口 相同的部分
    baseURL:"/dev-api",
    // 超时时间
    timeout:5000 ,
})


//响应拦截器 : 主要是处理 数据，将错误响应直接处理掉
service.interceptors.response.use(
    (res) => {  //res : 响应数据
      // 未设置状态码则默认成功状态
      const code = res.data.code;
      const msg = res.data.msg;

      if (code === 3001) {
          // 表示用户登录过期 ，自动跳转到登录页面
        ElMessage.error(msg);
        removeToken()
        router.push('/oj/login')
        return Promise.reject(new Error(msg));

      } else if (code !== 1000) {
        // 弹框
        ElMessage.error(msg);
        return Promise.reject(new Error(msg));
      } else {
        // 这里 是 拦截放行： 登录成功
        return Promise.resolve(res.data);
      }
    },
    (error) => {
      return Promise.reject(error);
    }
  );

  //请求拦截器
service.interceptors.request.use(
  (config) => {
    if (getToken()) {
      config.headers["Authorization"] = "Bearer " + getToken();
    }
    return config;
  },
  (error) => {
    console.log(error)
    Promise.reject(error);
  }
);



export default service